package com.homework.ch0123;
import java.util.Scanner;
public class JavaUtils1 {
    /*
    * 作用：该函数主要是将一个数的第n为置为0，返回结果值（int）
    * 从右向左数，从1开始
    * 比如输入10 4
    * 10:00000000 00000000 00000000 00001010
    * 1<<3找到第4位，0&任意数都为0，那么就需要取反一下让第4位为0，其他为1，1&上任意数等于任意数，所以10的其他位置不变
    * 所以结果为00000000 00000000 00000000 00000010 == 2
    * 比如输入0 4
    * 0：00000000 00000000 00000000 00000000
    * 1<<3找到第4位，然后取反那么1只有第4位为0，其余为1
    * 结果：00000000 00000000 00000000 00000000
    * 所以return v^(1<<(n-1))在v==0时就出错了
    * */

    /**
     *
     * @param v 输入一个值
     * @param n 表示第几位置为0
     * @return
     */
    public static int setZero(int v,int n)
    {
        return ~(1<<(n-1))&v;
    }

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入一个数：");
        int v=sc.nextInt();
        System.out.print("请输入要将这个数的第几位置为0：");
        int n=sc.nextInt();
        System.out.println(v+"的第"+n+"位被置为0"+"后的值为："+setZero(v,n));
    }
}
